<?php

declare(strict_types=1);

use function Hyperf\Support\env;
use function Hyperf\Support\value;

// 消费者列表
$services = [
    'RpcOrderService' => App\JsonRpc\RpcOrderServiceInterface::class,
];

$address = 'http://'.env('NACOS_HOST', '127.0.0.1').':'.env('NACOS_PORT', 8848);

return [
    'enable' => [
        'discovery' => true, // 开启服务发现
        'register' => true, // 开启服务注册
    ],
    'consumers' => value(function () use ($services, $address) {
        $consumers = [];
        foreach ($services as $name => $interface) {
            $consumers[] = [
                // name 需与服务提供者的 name 属性相同
                'name' => $name,
                // 服务接口名，可选，默认值等于 name 配置的值，如果 name 直接定义为接口类则可忽略此行配置，如 name 为字符串则需要配置 service 对应到接口类
                'service' => $interface,
                'registry' => [
                    'protocol' => 'nacos',
                    'address' => $address,
                ],
            ];
        }

        return $consumers;
    }),
    'providers' => [],
    'drivers' => [
        'nacos' => [
            // The nacos host info
            'host' => env('NACOS_HOST', '127.0.0.1'), // Nacos 服务器地址
            'port' => env('NACOS_PORT', 8848), // Nacos 服务器端口
            // The nacos account info
            'username' => env('NACOS_USERNAME', 'nacos'), // Nacos 用户名 (如果开启鉴权)
            'password' => env('NACOS_PASSWORD', 'nacos'), // Nacos 密码 (如果开启鉴权)
            'guzzle' => [
                'config' => null,
            ],
            'group_name' => env('NACOS_GROUP', 'DEFAULT_GROUP'), // 默认分组，根据实际情况修改
            'namespace_id' => env('NACOS_NAMESPACE', 'public'), // 命名空间 ID，在 Nacos 控制台创建
            'heartbeat' => 5,
            'ephemeral' => true, // 是否注册为临时实例
        ],
    ],
];
